package com.gzsxy.excel.util;

import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

/**
 * 
 * 功能: 异步线程池
 * 版本 1.0
 * 原始架构
 * </pre>
 */
public class ThreadPool {
	
    /**
     * 异步线程
     */
    private final static ThreadPoolExecutor EXECUTOR = new ThreadPoolExecutor(
    				// 核心线程池大小 
    				Runtime.getRuntime().availableProcessors(),
    				// 最大线程池大小
            Runtime.getRuntime().availableProcessors(),
            		// 线程最大空闲时间
            		10,   
            		// 时间单位
            		TimeUnit.MINUTES,  
            		// 线程等待队列
                    new ArrayBlockingQueue<>(200),
                    // 线程创建工厂
                    r -> new Thread(r, "excelExportThread"),  
                    // 拒绝策略
                    new ThreadPoolExecutor.CallerRunsPolicy());

    public static ThreadPoolExecutor getExecutor() {
        return EXECUTOR;
    }
    
}
